home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 6
/
CU Amiga Magazine's Super CD-ROM 06 (1996)(EMAP Images)(GB)(Track 1 of 4)[!][issue 1997-01].iso
/
cucd
/
prog
/
gnu-c
/
man
/
cat1
/
gprof.0
< prev
next >
Wrap
Text File
|
1995-08-24
|
9KB
|
199 lines
GPROF(1) GPROF(1)
NNAAMMEE
gprof - display call graph profile data
SSYYNNOOPPSSIISS
ggpprrooff [[ --aabbccsszz ]] [[ --ee||--EE _n_a_m_e ]] [[ --ff||--FF _n_a_m_e ]] [[ --kk _f_r_o_m_-
_n_a_m_e _t_o_n_a_m_e ]] [[ _o_b_j_f_i_l_e [[ _g_m_o_n_._o_u_t ]] ]]
DDEESSCCRRIIPPTTIIOONN
ggpprrooff produces an execution profile of C, Pascal, or For-
tran77 programs. The effect of called routines is incor-
porated in the profile of each caller. The profile data
is taken from the call graph profile file (`gmon.out'
default) which is created by programs that are compiled
with the --ppgg option of cccc(11),, ppcc(11),, and ff7777(11).. The --ppgg
option also links in versions of the library routines that
are compiled for profiling. GGpprrooff reads the given object
file (the default is `a.out') and establishes the relation
between its symbol table and the call graph profile from
`gmon.out'. If more than one profile file is specified,
the ggpprrooff output shows the sum of the profile information
in the given profile files.
GGpprrooff calculates the amount of time spent in each routine.
Next, these times are propagated along the edges of the
call graph. Cycles are discovered, and calls into a cycle
are made to share the time of the cycle. The first list-
ing shows the functions sorted according to the time they
represent including the time of their call graph descen-
dents. Below each function entry is shown its (direct)
call graph children, and how their times are propagated to
this function. A similar display above the function shows
how this function's time and the time of its descendents
is propagated to its (direct) call graph parents.
Cycles are also shown, with an entry for the cycle as a
whole and a listing of the members of the cycle and their
contributions to the time and call counts of the cycle.
Second, a flat profile is given, similar to that provided
by pprrooff(11).. This listing gives the total execution times,
the call counts, the time in milleseconds the call spent
in the routine itself, and the time in milleseconds the
call spent in the routine itself including its descen-
dents.
Finally, an index of the function names is provided.
OOPPTTIIOONNSS
The following options are available:
--aa suppresses the printing of statically declared
functions. If this option is given, all relevant
information about the static function (e.g., time
samples, calls to other functions, calls from other
January 29, 1993 1
GPROF(1) GPROF(1)
functions) belongs to the function loaded just
before the static function in the `objfile' file.
--bb suppresses the printing of a description of each
field in the profile.
--cc the static call graph of the program is discovered
by a heuristic that examines the text space of the
object file. Static-only parents or children are
shown with call counts of 0.
--ee _n_a_m_e
suppresses the printing of the graph profile entry
for routine _n_a_m_e and all its descendants (unless
they have other ancestors that aren't suppressed).
More than one --ee option may be given. Only one
_n_a_m_e may be given with each --ee option.
--EE _n_a_m_e
suppresses the printing of the graph profile entry
for routine _n_a_m_e (and its descendants) as --ee ,,
above, and also excludes the time spent in _n_a_m_e
(and its descendants) from the total and percentage
time computations. (For example, --EE _m_c_o_u_n_t --EE
_m_c_l_e_a_n_u_p is the default.)
--ff _n_a_m_e
prints the graph profile entry of only the speci-
fied routine _n_a_m_e and its descendants. More than
one --ff option may be given. Only one _n_a_m_e may be
given with each --ff option.
--FF _n_a_m_e
prints the graph profile entry of only the routine
_n_a_m_e and its descendants (as --ff ,, above) and also
uses only the times of the printed routines in
total time and percentage computations. More than
one --FF option may be given. Only one _n_a_m_e may be
given with each --FF option. The --FF option overrides
the --EE option.
--kk _f_r_o_m_n_a_m_e _t_o_n_a_m_e
will delete any arcs from routine _f_r_o_m_n_a_m_e to rou-
tine _t_o_n_a_m_e. This can be used to break undesired
cycles. More than one --kk option may be given.
Only one pair of routine names may be given with
each --kk option.
--ss a profile file `gmon.sum' is produced that repre-
sents the sum of the profile information in all the
specified profile files. This summary profile file
may be given to later executions of gprof (probably
also with a --ss) to accumulate profile data across
several runs of an `objfile' file.
January 29, 1993 2
GPROF(1) GPROF(1)
--vv prints the version number for gprof, and then
exits.
--zz displays routines that have zero usage (as shown by
call counts and accumulated time). This is useful
with the --cc option for discovering which routines
were never called.
FFIILLEESS
a.out the namelist and text space.
gmon.out dynamic call graph and profile.
gmon.sum summarized dynamic call graph and profile.
SSEEEE AALLSSOO
mmoonniittoorr(33),, pprrooffiill(22),, cccc(11),, pprrooff(11)
``An Execution Profiler for Modular Programs'', by S. Gra-
ham, P. Kessler, M. McKusick; _S_o_f_t_w_a_r_e _- _P_r_a_c_t_i_c_e _a_n_d
_E_x_p_e_r_i_e_n_c_e_, Vol. 13, pp. 671-685, 1983.
``gprof: A Call Graph Execution Profiler'', by S. Graham,
P. Kessler, M. McKusick; _P_r_o_c_e_e_d_i_n_g_s _o_f _t_h_e _S_I_G_P_L_A_N _'_8_2
_S_y_m_p_o_s_i_u_m _o_n _C_o_m_p_i_l_e_r _C_o_n_s_t_r_u_c_t_i_o_n_, SIGPLAN Notices, Vol.
17, No 6, pp. 120-126, June 1982.
HHIISSTTOORRYY
GGpprrooff appeared in 4.2 BSD.
BBUUGGSS
The granularity of the sampling is shown, but remains sta-
tistical at best. We assume that the time for each execu-
tion of a function can be expressed by the total time for
the function divided by the number of times the function
is called. Thus the time propagated along the call graph
arcs to the function's parents is directly proportional to
the number of times that arc is traversed.
Parents that are not themselves profiled will have the
time of their profiled children propagated to them, but
they will appear to be spontaneously invoked in the call
graph listing, and will not have their time propagated
further. Similarly, signal catchers, even though pro-
filed, will appear to be spontaneous (although for more
obscure reasons). Any profiled children of signal catch-
ers should have their times propagated properly, unless
the signal catcher was invoked during the execution of the
profiling routine, in which case all is lost.
The profiled program must call eexxiitt(22) or return normally
for the profiling information to be saved in the
`gmon.out' file.
January 29, 1993 3